Systems and methods for providing functionality based on device orientation

ABSTRACT

Systems, methods, and non-transitory computer-readable media can determine a first orientation in which a computing system is positioned. A first functionality can be provided when the computing system is positioned in the first orientation. It can be determined that the computing system becomes positioned in a second orientation. A second functionality can be selected, out of a set of functionalities, based on a current state associated with the computing system. The second functionality can be provided when the computing system becomes positioned in the second orientation.

FIELD OF THE INVENTION

The present technology relates to the field of providing functionalityfrom a computing device. More particularly, the present technologyrelates to techniques for providing functionality based on deviceorientation.

BACKGROUND

Today, people often utilize computing devices (or systems) for a widevariety of purposes. Users can use their computing devices, for example,to interact with one another, access content, share content, and createcontent. In some cases, a user of a social networking system (orservice) can utilize his or her computing device to provide, post,share, and access various content items, such as status updates, links,images, and videos, via the social networking system.

Often times, the size of a display screen of a computing device islimited. Accordingly, text, images, and other content usually have tocompete for space to be displayed on the screen. Under conventionalapproaches, different types of computing device functionality can use updisplay screen space ineffectively. In some cases, conventionalapproaches to providing input elements such as text boxes,visualizations such as images, and other functionality requiring displayscreen space can be performed inefficiently. As such, conventionalapproaches can create challenges for or reduce the overall userexperience associated with providing content and other devicefunctionality.

SUMMARY

Embodiments according to the invention are in particular disclosed inthe attached claims directed to a method, a storage medium, a system anda computer program product, wherein any feature mentioned in one claimcategory, e.g. method, can be claimed in another claim category, e.g.system, as well. The dependencies or references back in the attachedclaims are chosen for formal reasons only. However any subject matterresulting from a deliberate reference back to any previous claims (inparticular multiple dependencies) can be claimed as well, so that anycombination of claims and the features thereof is disclosed and can beclaimed regardless of the dependencies chosen in the attached claims.The subject-matter which can be claimed comprises not only thecombinations of features as set out in the attached claims but also anyother combination of features in the claims, wherein each featurementioned in the claims can be combined with any other feature orcombination of other features in the claims. Furthermore, any of theembodiments and features described or depicted herein can be claimed ina separate claim and/or in any combination with any embodiment orfeature described or depicted herein or with any of the features of theattached claims.

Various embodiments of the present disclosure can include systems,methods, and non-transitory computer readable media configured todetermine a first orientation in which a computing system is positioned.A first functionality can be provided when the computing system ispositioned in the first orientation. It can be determined that thecomputing system becomes positioned in a second orientation. A secondfunctionality can be selected, out of a set of functionalities, based ona current state associated with the computing system. The secondfunctionality can be provided when the computing system becomespositioned in the second orientation.

In an embodiment, the first orientation can correspond to a portraitorientation and the second orientation can correspond to a landscapeorientation. In an embodiment, the first orientation can correspond tothe landscape orientation and the second orientation can correspond tothe portrait orientation.

In an embodiment, the current state associated with the computing systemcan include at least one of a current context associated with anapplication running on the computing system or a current contextassociated with an operating system running on the computing system.

In an embodiment, at least a first subset out of the set offunctionalities can be associated with content production and at least asecond subset out of the set of functionalities can be associated withcontent consumption.

In an embodiment, the first functionality can be associated with aninput element for creating a post on a social networking system and thesecond functionality can be associated with a camera mode for producingan image to be included in the post.

In an embodiment, the first functionality can be associated with aninput element for creating a post on a social networking system and thesecond functionality can be associated with at least one of adding alocation tag to the post, adding a user tag to the post, applying facialrecognition to the post, or utilizing rich-text editing for the post.

In an embodiment, the first functionality can be associated withaccessing a content item in a first view and the second functionalitycan be associated with accessing the content item in a second view. Insome instances, the second view can provide more information associatedwith the content item than the first view.

In an embodiment, the first functionality can be associated with afinancial transaction and the second functionality can be associatedwith providing at least one of a receipt, a business card, or acommunication expressing gratitude.

In an embodiment, the first functionality can be associated withaccessing a message in an inbox and the second functionality can beassociated with providing at least one of the message, the inbox, or amessage thread of which the message is a part.

In an embodiment, the first functionality can be associated withaccessing a first content item in a first view and the secondfunctionality can be associated with providing the first content itemand at least one tab for switching to a second view to access a secondcontent item.

In an embodiment, the first functionality can be associated with asearch and the second functionality can be associated with providing aset of results based on the search. In some cases, the providing of theset of results can include providing at least a first subset of resultsassociated with a first search result type and a second subset ofresults associated with a second search result type.

In an embodiment, the first functionality can be associated withproviding a link to a web resource and the second functionality can beassociated with initiating a loading of the web resource via the link.

In an embodiment, it can be determined that the computing system becomespositioned in the first orientation subsequent to the providing of thesecond functionality. A third functionality can be selected based on thesecond functionality. The third functionality can be provided when thecomputing system becomes positioned in the first orientation subsequentto the providing of the second functionality.

In an embodiment, the third functionality can be associated withinitiating a loading of an image, produced in a camera mode associatedwith the second functionality, to be included in a post to a socialnetworking system. In some instances, a creation of the post can beinitiated based on the first functionality.

In an embodiment, the third functionality can be associated with atleast one of a back instruction, a cancel instruction, an ignoreinstruction, a quit instruction, an escape instruction, or an exitinstruction.

In an embodiment, a direction associated with a change in orientationexperienced by the computing system, when the computing system becomespositioned in the second orientation subsequent to being positioned inthe first orientation, can be determined. In some instances, theselecting of the second functionality can be based on the direction.

In an embodiment, at least one of the first orientation or the secondorientation can be determined based on one or more orientation sensorsof the computing system.

In an embodiment, the one or more orientation sensors can include atleast one of an accelerometer, a gyroscope, a compass, a barometer, amagnetometer, or a motion processor.

In a further embodiment according to the invention, one or morecomputer-readable non-transitory storage media embody software that isoperable when executed to perform a method according to the invention orany of the above mentioned embodiments.

In a further embodiment according to the invention, a system comprises:one or more processors; and at least one memory coupled to theprocessors and comprising instructions executable by the processors, theprocessors operable when executing the instructions to perform a methodaccording to the invention or any of the above mentioned embodiments.

In a further embodiment according to the invention, a computer programproduct, preferably comprising a computer-readable non-transitorystorage media, is operable when executed on a data processing system toperform a method according to the invention or any of the abovementioned embodiments.

Many other features and embodiments of the invention will be apparentfrom the accompanying drawings and from the following detaileddescription.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example system including an example orientationdependent functionality module configured to facilitate providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 2 illustrates an example functionality module configured tofacilitate providing functionality based on device orientation,according to an embodiment of the present disclosure.

FIG. 3 illustrates an example state determination module configured tofacilitate providing functionality based on device orientation,according to an embodiment of the present disclosure.

FIG. 4A illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 4B illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 4C illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 5A illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 5B illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 6A illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 6B illustrates an example scenario associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 7 illustrates an example method associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 8 illustrates an example method associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure.

FIG. 9 illustrates a network diagram of an example system that can beutilized in various scenarios, according to an embodiment of the presentdisclosure.

FIG. 10 illustrates an example of a computer system that can be utilizedin various scenarios, according to an embodiment of the presentdisclosure.

The figures depict various embodiments of the disclosed technology forpurposes of illustration only, wherein the figures use like referencenumerals to identify like elements. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated in the figures can be employedwithout departing from the principles of the disclosed technologydescribed herein.

DETAILED DESCRIPTION

Providing Functionality Based on Device Orientation

People use computing devices (or systems) for various purposes.Computing devices can provide different kinds of functionality. Userscan utilize their computing devices to produce content, such as bywriting articles, taking pictures, or recording videos. Users can alsouse their computing devices to consume content, such as by readingarticles, viewing media, or accessing web resources (e.g., web sites,online services, etc.). In some cases, users of a social networkingsystem (or service) can use their computing devices to communicate orinteract with other users as well as to create content, provide content,share content, and/or access content, via the social networking system.

Under conventional approaches, providing functionality on a computingdevice can require the use of a display screen of the computing device.Accordingly, different types of functionality or features provided onthe computing device must often share display space on the displayscreen. However, display space on the display screen of the computingdevice can often times be limited. In some cases, conventionalapproaches can inefficiently provide functionality or features thatrequire display space.

Therefore, an improved approach to providing device or systemfunctionality can be beneficial for addressing or alleviating variousconcerns associated with conventional approaches. Various embodiments ofthe present disclosure can provide functionality based on an orientationof the computing device or system. In some embodiments, the disclosedtechnology can utilize one or more orientation sensors to determine afirst orientation in which the computing system is positioned. A firstfunctionality can be provided when the computing system is positioned inthe first orientation. It can be determined that the computing systembecomes positioned in a second orientation. A second functionality canbe selected, out of a set of functionalities, based on a current stateassociated with the computing system. The second functionality can beprovided when the computing system becomes positioned in the secondorientation.

FIG. 1 illustrates an example system 100 including an exampleorientation dependent functionality module 102 configured to facilitateproviding functionality based on device (or system) orientation,according to an embodiment of the present disclosure. In someimplementations, the orientation dependent functionality module 102 caninclude an orientation determination module 104, a functionality module106, and a state determination module 108. The example system 100 canalso include at least one data store 110.

The at least one data store 110 can be configured to store and maintainvarious types of data. In some implementations, the at least one datastore 110 can store information associated with a social networkingsystem (or service), such as the social networking system 930 of FIG. 9.The information associated with the social networking system can includedata about users, social connections, social interactions, locations,maps, places, events, groups, posts, communications, media, content,account settings, privacy settings, and various other types of data. Asshown in the example system 100, in some embodiments, the orientationdependent functionality module 102 can be configured to communicate oroperate with the at least one data store 110.

Moreover, the orientation determination module 104 can be configured tofacilitate determining an orientation in which a computing system ispositioned. Similar to other modules of the disclosed technology, insome embodiments, the orientation determination module 104 can beimplemented as hardware, software, or any combination thereof. Forexample, in some implementations, the orientation determination module104 can include one or more orientation sensors. In another example, theone or more orientation sensors can be implemented outside of theorientation determination module 104 but can reside on or within thecomputing system.

The orientation determination module 104 can utilize or operate inconjunction with the one or more orientation sensors to determine anorientation in which the computing system is positioned. In some cases,the orientation determination module 104 can determine that thecomputing system is positioned in a portrait (or vertical) orientation.In some instances, the orientation determination module 104 candetermine that the computing system is positioned in a landscape (orhorizontal) orientation. Further, the orientation determination module104 can determine a change in orientation experienced by the computingsystem. For example, the orientation determination module 104 candetermine that the computing system had been positioned in oneorientation and has become positioned in another orientation.

In some embodiments, the one or more orientation sensors can include,but are not limited to, at least one of an accelerometer, a gyroscope, acompass, a barometer, a magnetometer, a motion processor (e.g., a motionco-processor), or any combination thereof.

Additionally, the functionality module 106 can be configured tofacilitate providing functionality based on the orientation of thecomputing system. In some instances, the functionality module 106 can beconfigured to facilitate providing functionality based on a currentstate associated with the computing system. For example, thefunctionality module 106 can provide a functionality that is selected,out of a set of functionalities, based on the orientation and/or thecurrent state associated with the computing system. The functionalitymodule 106 will be discussed in more detail with reference to FIG. 2.

In some embodiments, the current state associated with the computingsystem can be determined, identified, acquired, and/or provided by thestate determination module 108. More details related to the statedetermination module 108 will be provided with reference to FIG. 3.

Moreover, in some embodiments, the orientation determination module 104can facilitate determining a direction associated with a change inorientation experienced by the computing system when the computingsystem becomes positioned in a latter orientation subsequent to beingpositioned in a former orientation. In some cases, the selecting of afunctionality to be provided by the computing system can be based on thedirection (e.g., clockwise, counterclockwise, etc.).

FIG. 2 illustrates an example functionality module 202 configured tofacilitate providing functionality based on device orientation,according to an embodiment of the present disclosure. In someembodiments, the functionality module 106 of FIG. 1 can be implementedas the example functionality module 202. In some cases, the examplefunctionality module 202 can include a content production module 210 anda content consumption module 220, as shown in the example of FIG. 2.

As discussed above, the functionality module 202 can be configured tofacilitate providing functionality based on the orientation of acomputing system. For example, the functionality module 202 can selectand provide at least a first functionality when the computing system isdetermined to be in a first orientation, and can select and provide atleast a second functionality when the computing system is determined tobe in a second orientation. In some cases, the functionality module 202can be configured to provide a functionality that is selected, out of aset of functionalities, based on the orientation and/or a current stateassociated with the computing system. In some instances, the set offunctionalities can include a subset of functionalities associated withcontent production as well as another subset of functionalitiesassociated with content consumption.

In the example of FIG. 2, the content production module 210 can beconfigured to provide the subset of functionalities associated withcontent production. The subset of functionalities associated withcontent production can include, but is not limited to, a mediaproduction functionality 212, an editing functionality 214, and aloading functionality 216. It is appreciated that many variations arepossible.

The media production functionality 212 can be associated with acquiring,creating, and/or providing media content items. Examples of mediacontent items can include, but are not limited to, images, videos,audio, and/or text, etc. In one example, the media productionfunctionality 212 can include a functionality of producing a statusupdate or a post at a social networking system using one or morekeyboards (e.g., virtual keyboards, digital keyboards, etc.) of thecomputing system. In another example, the media production functionality212 can include a functionality of capturing images or recording videosusing one or more cameras of the computing system.

The editing functionality 214 can be associated with developing,modifying, and/or revising content, such as media content items andother content items. In one example, the editing functionality 214 cancorrespond to editing images, videos, audios, and/or text, etc. Inanother example, the editing functionality 214 can correspond to addingor editing one or more properties or metadata (e.g., tags, descriptions,dates, locations, etc.) associated with a particular content item. Theediting functionality 214 can include, for example, a functionality ofapplying facial recognition to the particular content item to detectand/or recognize one or more faces included with the particular contentitem. Furthermore, in some instances, the editing functionality 214 caninclude a functionality of rich-text editing, which can include changingfont styles, font sizes, font colors, symbols, etc.

The loading functionality 216 can be associated with a functionality ofloading content that has been produced or provided. In some cases, theloading functionality 216 can correspond to a loading of an image,video, or other content item that has been produced or provided. Forexample, the loading functionality 216 can include initiating a loadingof a captured image to be included or attached as part of a post to thesocial networking system. In another example, the loading functionality216 can include initiating a loading of a captured image to be includedor attached as part of a message to be sent.

Additionally, in the example of FIG. 2, the content consumption module220 can be configured to provide the subset of functionalitiesassociated with content consumption. The subset of functionalitiesassociated with content consumption can include, but is not limited to,an information functionality 222, a tab functionality 224, and a loadingfunctionality 226. Again, it is contemplated that there can be manyvariations.

The information functionality 222 can correspond to a functionality ofproviding information about or otherwise related to content that isbeing consumed (e.g., viewed, played, accessed, etc.). In some cases,different types and/or amounts of information can be provided underdifferent circumstances. For example, when the computing system is in afirst orientation, certain information can be provided. When thecomputing system becomes positioned in a second orientation, differentinformation can be provided.

The tab functionality 224 can correspond to a functionality of providingone or more tabs, such as for navigating an interface through whichcontent is consumed. In some instances, each tab can provide access to arespective set of content items or information to be consumed. In oneexample, content can be consumed at a social networking system user'sprofile page or timeline. A first tab on the profile page or timelinecan provide access to information about the user. In this example, asecond tab can provide access to one or more media content itemsassociated with the user. A third tab can provide information about theuser's friends or social connections within the social networkingsystem. In another example, content to be consumed can include resultsproduced from a search or query. The tab functionality 224 can beassociated with providing different types of search results (e.g., webresults, image results, news results, etc.) via different tabs.

The loading functionality 226 can correspond to a functionality ofinitiating a loading of content to be consumed. In one example, theloading functionality 226 can include loading an image, video, or othercontent item to be consumed. In another example, the loadingfunctionality 226 can be associated with loading a web resourceaccessible via a link or web address.

In some embodiments, the loading functionality 226 associated withcontent consumption can be substantially the same as or similar to theloading functionality 216 associated with content production. In someembodiments, the loading functionality 226 associated with contentconsumption can be different or separate from the loading functionality216 associated with content production. It should be understood thatmany variations are possible.

FIG. 3 illustrates an example state determination module 302 configuredto facilitate providing functionality based on device orientation,according to an embodiment of the present disclosure. In someembodiments, the state determination module 108 of FIG. 1 can beimplemented as the example functionality module 302. As shown in theexample of FIG. 3, the functionality module 302 can include anapplication context module 304 and an operating system context module306.

As discussed previously, the state determination module 302 can beconfigured to acquire, determine, recognize, and/or identity a state,such as a current state, associated with a computing system. In someinstances, the current state associated with the computing system caninclude at least one of a current context associated with an applicationrunning on the computing system or a current context associated with anoperating system running on the computing system.

The application context module 304 can be configured to acquire,determine, recognize, and/or identity a context, such as the currentcontext, associated with an application running on the computing system.The current context associated with the application can indicate astate, a stage, a step, a process, an operation, and/or a task that iscurrently being performed or experienced by the application running onthe computing system.

In one example, the current context of the application can indicatewhich application interface or portion thereof with which a user of theapplication is currently interacting. In another example, the currentcontext of the application can indicate which functionality(ies) theapplication is currently providing. In a further example, the currentcontext of the application can provide up-to-date information about theapplication in real-time (or near real-time). In some embodiments, oneor more functionalities provided by the computing system can be based onthe current context of the application.

The operating system context module 306 can be configured to acquire,determine, recognize, and/or identity a context, such as the currentcontext, associated with an operating system running on the computingsystem. The current context associated with the operating system canindicate a state, a stage, a step, a process, an operation, and/or atask that is currently being performed or experienced by the operatingsystem running on the computing system.

In one example, the current context of the operating system can indicatewhich operating system interface or portion thereof a user of theoperating system is currently utilizing. In another example, the currentcontext of the operating system can indicate which functionality(ies) orfeature(s) the operating system is currently providing. In a furtherexample, the current context of the operating system can provideup-to-date information about the operating system in real-time (or nearreal-time). In some embodiments, one or more functionalities provided bythe computing system can be based on the current context of theoperating system.

FIG. 4A illustrates an example scenario 400 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 400 can involve an examplecomputing device or system 402 configured to provide functionality basedon device orientation.

In the example scenario 400, the computing system 402 can include adisplay screen 404 and one or more cameras, such as a rear-facing camera406. The computing system 402 can also be positioned in a firstorientation. As shown, the first orientation can correspond to aportrait (or vertical) orientation. In this example, while positioned inthe first orientation, the computing system 402 can provide a firstfunctionality which corresponds to providing, on the display screen 404,an input element (e.g., text box) 408 for creating a post on a socialnetworking system.

FIG. 4B illustrates an example scenario 430 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. In FIG. 4B, the computing system 402 of FIG. 4Ahas experienced or undergone a change in orientation such that thecomputing system 402 is now positioned in a second orientation. As shownin FIG. 4B, the second orientation can correspond to a landscape (orhorizontal) orientation. While being positioned in the secondorientation, the computing system 402 can provide a secondfunctionality. In this example, the second functionality can beassociated with a camera mode 410 for producing an image to be includedin the post on the social networking system. As shown in the examplescenario 430, the camera mode 410 can provide, on the display screen404, a camera view of the rear-facing camera 406 as well as other cameramode interface elements for capturing images or recording videos, whichcan be included in the post. A user can use the camera mode 410 tocapture an image. Moreover, in some embodiments, the camera mode 410 canbe enabled immediately or near-instantaneously when the computing system402 is positioned in the second orientation. For example, the cameramode 410 can be activated immediately or near-instantaneously when it isdetected that the computing system 402 becomes positioned in the secondorientation. Furthermore, in some implementations, the computing system402 can automatically capture one or more images in the camera mode 410,which can be initiated, activated, or enabled when the computing system402 is in the second orientation.

FIG. 4C illustrates an example scenario 460 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 460 illustrates thecomputing system 402 of FIG. 4B having experienced or undergone anotherchange in orientation such that the computing system 402 has nowreverted back to the first orientation, which can correspond to theportrait orientation. Having reverted back to the first orientationsubsequent to capturing the image in the camera mode (secondfunctionality), the computing system 402 can select and provide a thirdfunctionality. In this example, since the image was previously capturedin the camera mode (second functionality), the third functionality canbe selected to correspond to initiating a loading of the image forinclusion or attachment 412 with the post to the social networkingsystem.

Moreover, it should be appreciated that many variations are possible. Inone example, the first functionality can be provided when the computingsystem is positioned in the first orientation and the firstfunctionality can be associated with an input element 408 for creatingthe post for the social networking system, as discussed above. As shownin FIG. 4A, there may be limited display space on the display screen 404to efficiently, effectively, or comfortably provide additionalfunctionality or features that require more display space. In thisexample, although not explicitly illustrated, the second functionalityprovided in the second orientation can be associated with providing atleast one of an option to add a location tag to the post, an option toadd a user tag to the post, an option to apply facial recognition to thepost, or an option to utilize rich-text editing for the post.

FIG. 5A illustrates an example scenario 500 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 500 involves an examplecomputing device or system 502 which can include a display screen 504.The computing system 502 can provide a first functionality while in afirst orientation, such as a portrait orientation. In this examplescenario 500, the first functionality can be associated with accessing acontent item (e.g., an image of a pizza) in a first view 506 on thedisplay screen 504.

FIG. 5B illustrates an example scenario 550 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 550 illustrates thecomputing system 502 of FIG. 5A having experienced a change inorientation from the first orientation to a second orientation, such asa landscape orientation. While the computing system 502 is in the secondorientation, a second functionality can be provided. In this examplescenario 550, the second functionality can be associated with accessingthe content item (e.g., the image of the pizza) in a second view 508. Asshown, the second view 508 can provide more information associated withthe content item than the first view 506. For example, the second view508 can provide a larger view of the content item. Moreover, the secondview 508 can provide properties and/or metadata (e.g., comments, likes,etc.) 510 associated with the content item.

Again, it is contemplated that many variations are possible. In oneexample, the first functionality can be associated with a financialtransaction and the second functionality can be associated withproviding at least one of a receipt, a business card, or a communicationexpressing gratitude (e.g., a “Thank You” note). In another example, thefirst functionality can be associated with accessing a message in aninbox and the second functionality can be associated with providing atleast one of the message, the inbox, or a message thread of which themessage is a part. In a further example, the first functionality can beassociated with providing a link to a web resource and the secondfunctionality can be associated with initiating a loading of the webresource via the link (e.g., accessing the link to present the webresource).

FIG. 6A illustrates an example scenario 600 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 600 can include an examplecomputing system 602 with a display screen 604. The computing system 602can provide a first functionality while in a first orientation, such asa portrait orientation. In this example scenario 600, the firstfunctionality can be associated with accessing a first content item(e.g., an image of a tree) in a first view 606.

FIG. 6B illustrates an example scenario 650 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. The example scenario 650 illustrates thecomputing system 602 of FIG. 6A having experienced a change inorientation from the first orientation to a second orientation, such asa landscape orientation. While the computing system 602 is in the secondorientation, a second functionality can be provided. In this examplescenario 650, the second functionality can be associated with providing,on the display screen 604, the first content item (e.g., the image ofthe tree) and at least one tab 608 for switching to a second view toaccess a second content item.

Furthermore, although not explicitly illustrated, in some embodiments,the first functionality can be associated with a search and the secondfunctionality can be associated with providing a set of results based onthe search. The providing of the set of results can include providing atleast a first subset of results associated with a first search resulttype and a second subset of results associated with a second searchresult type. In some cases, one or more tabs for switching among thesubsets can be provided in conjunction with the second functionality. Itis appreciated there can be many other possibilities and variations.

FIG. 7 illustrates an example method 700 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. It should be appreciated that there can beadditional, fewer, or alternative steps performed in similar oralternative orders, or in parallel, within the scope of the variousembodiments unless otherwise stated.

At block 702, the example method 700 can determine a first orientationin which the computing system is positioned. In one example, the firstorientation can include a portrait orientation, or alternatively, alandscape orientation. At block 704, the example method 700 can providea first functionality when the computing system is positioned in thefirst orientation.

At block 706, the example method 700 can determine that the computingsystem becomes positioned in a second orientation. The method 700 candetect a change in orientation experienced by the computing system,which results in the computing system becoming positioned in the secondorientation rather than in the first orientation. For example, theexample method 700 can determine that the computing system becomespositioned in the landscape orientation subsequent to being in theportrait orientation, or alternatively, that the computing systembecomes positioned in the portrait orientation subsequent to being inthe landscape orientation.

At block 708, the example method 700 can select a second functionality,out of a set of functional ities, based on a current state associatedwith the computing system. In some cases, the current state associatedwith the computing system can include a current context of anapplication and/or an operating system running on the computing system.At block 710, the example method 700 can provide the secondfunctionality when the computing system becomes positioned in the secondorientation.

FIG. 8 illustrates an example method 800 associated with providingfunctionality based on device orientation, according to an embodiment ofthe present disclosure. Again, it should be appreciated that there canbe additional, fewer, or alternative steps performed in similar oralternative orders, or in parallel, within the scope of the variousembodiments unless otherwise stated.

At block 802, the example method 800 can determine that the computingsystem becomes positioned in the first orientation subsequent to theproviding of the second functionality. At block 804, the example method800 can select a third functionality based on the second functionality.At block 806, the example method 800 can provide the third functionalitywhen the computing system becomes positioned in the first orientationsubsequent to the providing of the second functionality.

In some embodiments, the third functionality can be associated withinitiating a loading of an image, produced in a camera mode associatedwith the second functionality, to be included in a post to a socialnetworking system. In some instances, a creation of the post can beinitiated based on the first functionality. For example, the post can becreated as part of the first functionality provided when the computingsystem was in the first orientation. The image can be produced in thecamera mode provided as part of the second functionality when thecomputing system was in the second orientation. As part of the thirdfunctionality, the image can be loaded as an inclusion or attachment tothe post when the computing system reverts back to the firstorientation.

Moreover, in some embodiments, the third functionality can be associatedwith at least one of a back instruction, a cancel instruction, an ignoreinstruction, a quit instruction, an escape instruction, or an exitinstruction. In some cases, the third functionality can be set bydefault and/or by a user.

Furthermore, in some embodiments, one or more functionalities associatedwith content consumption and one or more functionalities associated withcontent production can be provided separately or in any combination.

Again, it is contemplated that there can be many other uses,applications, and/or variations associated with the various embodimentsof the present disclosure. For example, various embodiments of thepresent disclosure can learn, improve, and/or be refined over time.

Social Networking System—Example Implementation

FIG. 9 illustrates a network diagram of an example system 900 that canbe utilized in various embodiments for enhanced video encoding, inaccordance with an embodiment of the present disclosure. The system 900includes one or more user devices 910, one or more external systems 920,a social networking system (or service) 930, and a network 950. In anembodiment, the social networking service, provider, and/or systemdiscussed in connection with the embodiments described above may beimplemented as the social networking system 930. For purposes ofillustration, the embodiment of the system 900, shown by FIG. 9,includes a single external system 920 and a single user device 910.However, in other embodiments, the system 900 may include more userdevices 910 and/or more external systems 920. In certain embodiments,the social networking system 930 is operated by a social networkprovider, whereas the external systems 920 are separate from the socialnetworking system 930 in that they may be operated by differententities. In various embodiments, however, the social networking system930 and the external systems 920 operate in conjunction to providesocial networking services to users (or members) of the socialnetworking system 930. In this sense, the social networking system 930provides a platform or backbone, which other systems, such as externalsystems 920, may use to provide social networking services andfunctionalities to users across the Internet.

The user device 910 comprises one or more computing devices that canreceive input from a user and transmit and receive data via the network950. In one embodiment, the user device 910 is a conventional computersystem executing, for example, a Microsoft Windows compatible operatingsystem (OS), Apple OS X, and/or a Linux distribution. In anotherembodiment, the user device 910 can be a device having computerfunctionality, such as a smart-phone, a tablet, a personal digitalassistant (PDA), a mobile telephone, etc. The user device 910 isconfigured to communicate via the network 950. The user device 910 canexecute an application, for example, a browser application that allows auser of the user device 910 to interact with the social networkingsystem 930. In another embodiment, the user device 910 interacts withthe social networking system 930 through an application programminginterface (API) provided by the native operating system of the userdevice 910, such as iOS and ANDROID. The user device 910 is configuredto communicate with the external system 920 and the social networkingsystem 930 via the network 950, which may comprise any combination oflocal area and/or wide area networks, using wired and/or wirelesscommunication systems.

In one embodiment, the network 950 uses standard communicationstechnologies and protocols. Thus, the network 950 can include linksusing technologies such as Ethernet, 702.11, worldwide interoperabilityfor microwave access (WiMAX), 3G, 4G, CDMA, GSM, LTE, digital subscriberline (DSL), etc. Similarly, the networking protocols used on the network950 can include multiprotocol label switching (MPLS), transmissioncontrol protocol/Internet protocol (TCP/IP), User Datagram Protocol(UDP), hypertext transport protocol (HTTP), simple mail transferprotocol (SMTP), file transfer protocol (FTP), and the like. The dataexchanged over the network 950 can be represented using technologiesand/or formats including hypertext markup language (HTML) and extensiblemarkup language (XML). In addition, all or some links can be encryptedusing conventional encryption technologies such as secure sockets layer(SSL), transport layer security (TLS), and Internet Protocol security(IPsec).

In one embodiment, the user device 910 may display content from theexternal system 920 and/or from the social networking system 930 byprocessing a markup language document 914 received from the externalsystem 920 and from the social networking system 930 using a browserapplication 912. The markup language document 914 identifies content andone or more instructions describing formatting or presentation of thecontent. By executing the instructions included in the markup languagedocument 914, the browser application 912 displays the identifiedcontent using the format or presentation described by the markuplanguage document 914. For example, the markup language document 914includes instructions for generating and displaying a web page havingmultiple frames that include text and/or image data retrieved from theexternal system 920 and the social networking system 930. In variousembodiments, the markup language document 914 comprises a data fileincluding extensible markup language (XML) data, extensible hypertextmarkup language (XHTML) data, or other markup language data.Additionally, the markup language document 914 may include JavaScriptObject Notation (JSON) data, JSON with padding (JSONP), and JavaScriptdata to facilitate data-interchange between the external system 920 andthe user device 910. The browser application 912 on the user device 910may use a JavaScript compiler to decode the markup language document914.

The markup language document 914 may also include, or link to,applications or application frameworks such as FLASH™ or Unity™applications, the SilverLight™ application framework, etc.

In one embodiment, the user device 910 also includes one or more cookies916 including data indicating whether a user of the user device 910 islogged into the social networking system 930, which may enablemodification of the data communicated from the social networking system930 to the user device 910.

The external system 920 includes one or more web servers that includeone or more web pages 922 a, 922 b, which are communicated to the userdevice 910 using the network 950. The external system 920 is separatefrom the social networking system 930. For example, the external system920 is associated with a first domain, while the social networkingsystem 930 is associated with a separate social networking domain. Webpages 922 a, 922 b, included in the external system 920, comprise markuplanguage documents 914 identifying content and including instructionsspecifying formatting or presentation of the identified content.

The social networking system 930 includes one or more computing devicesfor a social network, including a plurality of users, and providingusers of the social network with the ability to communicate and interactwith other users of the social network. In some instances, the socialnetwork can be represented by a graph, i.e., a data structure includingedges and nodes. Other data structures can also be used to represent thesocial network, including but not limited to databases, objects,classes, meta elements, files, or any other data structure. The socialnetworking system 930 may be administered, managed, or controlled by anoperator. The operator of the social networking system 930 may be ahuman being, an automated application, or a series of applications formanaging content, regulating policies, and collecting usage metricswithin the social networking system 930. Any type of operator may beused.

Users may join the social networking system 930 and then add connectionsto any number of other users of the social networking system 930 to whomthey desire to be connected. As used herein, the term “friend” refers toany other user of the social networking system 930 to whom a user hasformed a connection, association, or relationship via the socialnetworking system 930. For example, in an embodiment, if users in thesocial networking system 930 are represented as nodes in the socialgraph, the term “friend” can refer to an edge formed between anddirectly connecting two user nodes.

Connections may be added explicitly by a user or may be automaticallycreated by the social networking system 930 based on commoncharacteristics of the users (e.g., users who are alumni of the sameeducational institution). For example, a first user specifically selectsa particular other user to be a friend. Connections in the socialnetworking system 930 are usually in both directions, but need not be,so the terms “user” and “friend” depend on the frame of reference.Connections between users of the social networking system 930 areusually bilateral (“two-way”), or “mutual,” but connections may also beunilateral, or “one-way.” For example, if Bob and Joe are both users ofthe social networking system 930 and connected to each other, Bob andJoe are each other's connections. If, on the other hand, Bob wishes toconnect to Joe to view data communicated to the social networking system930 by Joe, but Joe does not wish to form a mutual connection, aunilateral connection may be established. The connection between usersmay be a direct connection; however, some embodiments of the socialnetworking system 930 allow the connection to be indirect via one ormore levels of connections or degrees of separation.

In addition to establishing and maintaining connections between usersand allowing interactions between users, the social networking system930 provides users with the ability to take actions on various types ofitems supported by the social networking system 930. These items mayinclude groups or networks (i.e., social networks of people, entities,and concepts) to which users of the social networking system 930 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use via the socialnetworking system 930, transactions that allow users to buy or sellitems via services provided by or through the social networking system930, and interactions with advertisements that a user may perform on oroff the social networking system 930. These are just a few examples ofthe items upon which a user may act on the social networking system 930,and many others are possible. A user may interact with anything that iscapable of being represented in the social networking system 930 or inthe external system 920, separate from the social networking system 930,or coupled to the social networking system 930 via the network 950.

The social networking system 930 is also capable of linking a variety ofentities. For example, the social networking system 930 enables users tointeract with each other as well as external systems 920 or otherentities through an API, a web service, or other communication channels.The social networking system 930 generates and maintains the “socialgraph” comprising a plurality of nodes interconnected by a plurality ofedges. Each node in the social graph may represent an entity that canact on another node and/or that can be acted on by another node. Thesocial graph may include various types of nodes. Examples of types ofnodes include users, non-person entities, content items, web pages,groups, activities, messages, concepts, and any other things that can berepresented by an object in the social networking system 930. An edgebetween two nodes in the social graph may represent a particular kind ofconnection, or association, between the two nodes, which may result fromnode relationships or from an action that was performed by one of thenodes on the other node. In some cases, the edges between nodes can beweighted. The weight of an edge can represent an attribute associatedwith the edge, such as a strength of the connection or associationbetween nodes. Different types of edges can be provided with differentweights. For example, an edge created when one user “likes” another usermay be given one weight, while an edge created when a user befriendsanother user may be given a different weight.

As an example, when a first user identifies a second user as a friend,an edge in the social graph is generated connecting a node representingthe first user and a second node representing the second user. Asvarious nodes relate or interact with each other, the social networkingsystem 930 modifies edges connecting the various nodes to reflect therelationships and interactions.

The social networking system 930 also includes user-generated content,which enhances a user's interactions with the social networking system930. User-generated content may include anything a user can add, upload,send, or “post” to the social networking system 930. For example, a usercommunicates posts to the social networking system 930 from a userdevice 910. Posts may include data such as status updates or othertextual data, location information, images such as photos, videos,links, music or other similar data and/or media. Content may also beadded to the social networking system 930 by a third party. Content“items” are represented as objects in the social networking system 930.In this way, users of the social networking system 930 are encouraged tocommunicate with each other by posting text and content items of varioustypes of media through various communication channels. Suchcommunication increases the interaction of users with each other andincreases the frequency with which users interact with the socialnetworking system 930.

The social networking system 930 includes a web server 932, an APIrequest server 934, a user profile store 936, a connection store 938, anaction logger 940, an activity log 942, and an authorization server 944.In an embodiment of the invention, the social networking system 930 mayinclude additional, fewer, or different components for variousapplications. Other components, such as network interfaces, securitymechanisms, load balancers, failover servers, management and networkoperations consoles, and the like are not shown so as to not obscure thedetails of the system.

The user profile store 936 maintains information about user accounts,including biographic, demographic, and other types of descriptiveinformation, such as work experience, educational history, hobbies orpreferences, location, and the like that has been declared by users orinferred by the social networking system 930. This information is storedin the user profile store 936 such that each user is uniquelyidentified. The social networking system 930 also stores data describingone or more connections between different users in the connection store938. The connection information may indicate users who have similar orcommon work experience, group memberships, hobbies, or educationalhistory. Additionally, the social networking system 930 includesuser-defined connections between different users, allowing users tospecify their relationships with other users. For example, user-definedconnections allow users to generate relationships with other users thatparallel the users' real-life relationships, such as friends,co-workers, partners, and so forth. Users may select from predefinedtypes of connections, or define their own connection types as needed.Connections with other nodes in the social networking system 930, suchas non-person entities, buckets, cluster centers, images, interests,pages, external systems, concepts, and the like are also stored in theconnection store 938.

The social networking system 930 maintains data about objects with whicha user may interact. To maintain this data, the user profile store 936and the connection store 938 store instances of the corresponding typeof objects maintained by the social networking system 930. Each objecttype has information fields that are suitable for storing informationappropriate to the type of object. For example, the user profile store936 contains data structures with fields suitable for describing auser's account and information related to a user's account. When a newobject of a particular type is created, the social networking system 930initializes a new data structure of the corresponding type, assigns aunique object identifier to it, and begins to add data to the object asneeded. This might occur, for example, when a user becomes a user of thesocial networking system 930, the social networking system 930 generatesa new instance of a user profile in the user profile store 936, assignsa unique identifier to the user account, and begins to populate thefields of the user account with information provided by the user.

The connection store 938 includes data structures suitable fordescribing a user's connections to other users, connections to externalsystems 920 or connections to other entities. The connection store 938may also associate a connection type with a user's connections, whichmay be used in conjunction with the user's privacy setting to regulateaccess to information about the user. In an embodiment of the invention,the user profile store 936 and the connection store 938 may beimplemented as a federated database.

Data stored in the connection store 938, the user profile store 936, andthe activity log 942 enables the social networking system 930 togenerate the social graph that uses nodes to identify various objectsand edges connecting nodes to identify relationships between differentobjects. For example, if a first user establishes a connection with asecond user in the social networking system 930, user accounts of thefirst user and the second user from the user profile store 936 may actas nodes in the social graph. The connection between the first user andthe second user stored by the connection store 938 is an edge betweenthe nodes associated with the first user and the second user. Continuingthis example, the second user may then send the first user a messagewithin the social networking system 930. The action of sending themessage, which may be stored, is another edge between the two nodes inthe social graph representing the first user and the second user.Additionally, the message itself may be identified and included in thesocial graph as another node connected to the nodes representing thefirst user and the second user.

In another example, a first user may tag a second user in an image thatis maintained by the social networking system 930 (or, alternatively, inan image maintained by another system outside of the social networkingsystem 930). The image may itself be represented as a node in the socialnetworking system 930. This tagging action may create edges between thefirst user and the second user as well as create an edge between each ofthe users and the image, which is also a node in the social graph. Inyet another example, if a user confirms attending an event, the user andthe event are nodes obtained from the user profile store 936, where theattendance of the event is an edge between the nodes that may beretrieved from the activity log 942. By generating and maintaining thesocial graph, the social networking system 930 includes data describingmany different types of objects and the interactions and connectionsamong those objects, providing a rich source of socially relevantinformation.

The web server 932 links the social networking system 930 to one or moreuser devices 910 and/or one or more external systems 920 via the network950. The web server 932 serves web pages, as well as other web-relatedcontent, such as Java, JavaScript, Flash, XML, and so forth. The webserver 932 may include a mail server or other messaging functionalityfor receiving and routing messages between the social networking system930 and one or more user devices 910. The messages can be instantmessages, queued messages (e.g., email), text and SMS messages, or anyother suitable messaging format.

The API request server 934 allows one or more external systems 920 anduser devices 910 to call access information from the social networkingsystem 930 by calling one or more API functions. The API request server934 may also allow external systems 920 to send information to thesocial networking system 930 by calling APIs. The external system 920,in one embodiment, sends an API request to the social networking system930 via the network 950, and the API request server 934 receives the APIrequest. The API request server 934 processes the request by calling anAPI associated with the API request to generate an appropriate response,which the API request server 934 communicates to the external system 920via the network 950. For example, responsive to an API request, the APIrequest server 934 collects data associated with a user, such as theuser's connections that have logged into the external system 920, andcommunicates the collected data to the external system 920. In anotherembodiment, the user device 910 communicates with the social networkingsystem 930 via APIs in the same manner as external systems 920.

The action logger 940 is capable of receiving communications from theweb server 932 about user actions on and/or off the social networkingsystem 930. The action logger 940 populates the activity log 942 withinformation about user actions, enabling the social networking system930 to discover various actions taken by its users within the socialnetworking system 930 and outside of the social networking system 930.Any action that a particular user takes with respect to another node onthe social networking system 930 may be associated with each user'saccount, through information maintained in the activity log 942 or in asimilar database or other data repository. Examples of actions taken bya user within the social networking system 930 that are identified andstored may include, for example, adding a connection to another user,sending a message to another user, reading a message from another user,viewing content associated with another user, attending an event postedby another user, posting an image, attempting to post an image, or otheractions interacting with another user or another object. When a usertakes an action within the social networking system 930, the action isrecorded in the activity log 942. In one embodiment, the socialnetworking system 930 maintains the activity log 942 as a database ofentries. When an action is taken within the social networking system930, an entry for the action is added to the activity log 942. Theactivity log 942 may be referred to as an action log.

Additionally, user actions may be associated with concepts and actionsthat occur within an entity outside of the social networking system 930,such as an external system 920 that is separate from the socialnetworking system 930. For example, the action logger 940 may receivedata describing a user's interaction with an external system 920 fromthe web server 932. In this example, the external system 920 reports auser's interaction according to structured actions and objects in thesocial graph.

Other examples of actions where a user interacts with an external system920 include a user expressing an interest in an external system 920 oranother entity, a user posting a comment to the social networking system930 that discusses an external system 920 or a web page 922 a within theexternal system 920, a user posting to the social networking system 930a Uniform Resource Locator (URL) or other identifier associated with anexternal system 920, a user attending an event associated with anexternal system 920, or any other action by a user that is related to anexternal system 920. Thus, the activity log 942 may include actionsdescribing interactions between a user of the social networking system930 and an external system 920 that is separate from the socialnetworking system 930.

The authorization server 944 enforces one or more privacy settings ofthe users of the social networking system 930. A privacy setting of auser determines how particular information associated with a user can beshared. The privacy setting comprises the specification of particularinformation associated with a user and the specification of the entityor entities with whom the information can be shared. Examples ofentities with which information can be shared may include other users,applications, external systems 920, or any entity that can potentiallyaccess the information. The information that can be shared by a usercomprises user account information, such as profile photos, phonenumbers associated with the user, user's connections, actions taken bythe user such as adding a connection, changing user profile information,and the like.

The privacy setting specification may be provided at different levels ofgranularity. For example, the privacy setting may identify specificinformation to be shared with other users; the privacy settingidentifies a work phone number or a specific set of related information,such as, personal information including profile photo, home phonenumber, and status. Alternatively, the privacy setting may apply to allthe information associated with the user. The specification of the setof entities that can access particular information can also be specifiedat various levels of granularity. Various sets of entities with whichinformation can be shared may include, for example, all friends of theuser, all friends of friends, all applications, or all external systems920. One embodiment allows the specification of the set of entities tocomprise an enumeration of entities. For example, the user may provide alist of external systems 920 that are allowed to access certaininformation. Another embodiment allows the specification to comprise aset of entities along with exceptions that are not allowed to access theinformation. For example, a user may allow all external systems 920 toaccess the user's work information, but specify a list of externalsystems 920 that are not allowed to access the work information. Certainembodiments call the list of exceptions that are not allowed to accesscertain information a “block list”. External systems 920 belonging to ablock list specified by a user are blocked from accessing theinformation specified in the privacy setting. Various combinations ofgranularity of specification of information, and granularity ofspecification of entities, with which information is shared arepossible. For example, all personal information may be shared withfriends whereas all work information may be shared with friends offriends.

The authorization server 944 contains logic to determine if certaininformation associated with a user can be accessed by a user's friends,external systems 920, and/or other applications and entities. Theexternal system 920 may need authorization from the authorization server944 to access the user's more private and sensitive information, such asthe user's work phone number. Based on the user's privacy settings, theauthorization server 944 determines if another user, the external system920, an application, or another entity is allowed to access informationassociated with the user, including information about actions taken bythe user.

In some embodiments, the social networking system 930 can include anorientation dependent functionality module 946. The orientationdependent functionality module 946 can, for example, be implemented asthe orientation dependent functionality 102 of FIG. 1. The orientationdependent functionality module 946 can be configured to facilitatedetermining a first orientation in which a computing system ispositioned. The orientation dependent functionality module 946 can beconfigured to facilitate providing a first functionality when thecomputing system is positioned in the first orientation. The orientationdependent functionality module 946 can also be configured to facilitatedetermining that the computing system becomes positioned in a secondorientation. The orientation dependent functionality module 946 canfurther be configured to facilitate selecting a second functionality,out of a set of functionalities, based on a current state associatedwith the computing system. Moreover, the orientation dependentfunctionality module 946 can be configured to facilitate providing thesecond functionality when the computing system becomes positioned in thesecond orientation.

Hardware Implementation

The foregoing processes and features can be implemented by a widevariety of machine and computer system architectures and in a widevariety of network and computing environments. FIG. 10 illustrates anexample of a computer system 1000 that may be used to implement one ormore of the embodiments described herein in accordance with anembodiment of the invention. The computer system 1000 includes sets ofinstructions for causing the computer system 1000 to perform theprocesses and features discussed herein. The computer system 1000 may beconnected (e.g., networked) to other machines. In a networkeddeployment, the computer system 1000 may operate in the capacity of aserver machine or a client machine in a client-server networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. In an embodiment of the invention, the computersystem 1000 may be the social networking system 930, the user device910, and the external system 1020, or a component thereof. In anembodiment of the invention, the computer system 1000 may be one serveramong many that constitutes all or part of the social networking system930.

The computer system 1000 includes a processor 1002, a cache 1004, andone or more executable modules and drivers, stored on acomputer-readable medium, directed to the processes and featuresdescribed herein. Additionally, the computer system 1000 includes a highperformance input/output (I/O) bus 1006 and a standard I/O bus 1008. Ahost bridge 1010 couples processor 1002 to high performance I/O bus1006, whereas I/O bus bridge 1012 couples the two buses 1006 and 1008 toeach other. A system memory 1014 and one or more network interfaces 1016couple to high performance I/O bus 1006. The computer system 1000 mayfurther include video memory and a display device coupled to the videomemory (not shown). Mass storage 1018 and I/O ports 1020 couple to thestandard I/O bus 1008. The computer system 1000 may optionally include akeyboard and pointing device, a display device, or other input/outputdevices (not shown) coupled to the standard I/O bus 1008. Collectively,these elements are intended to represent a broad category of computerhardware systems, including but not limited to computer systems based onthe x86-compatible processors manufactured by Intel Corporation of SantaClara, Calif., and the x86-compatible processors manufactured byAdvanced Micro Devices (AMD), Inc., of Sunnyvale, Calif., as well as anyother suitable processor.

An operating system manages and controls the operation of the computersystem 1000, including the input and output of data to and from softwareapplications (not shown). The operating system provides an interfacebetween the software applications being executed on the system and thehardware components of the system. Any suitable operating system may beused, such as the LINUX Operating System, the Apple Macintosh OperatingSystem, available from Apple Computer Inc. of Cupertino, Calif., UNIXoperating systems, Microsoft® Windows® operating systems, BSD operatingsystems, and the like. Other implementations are possible.

The elements of the computer system 1000 are described in greater detailbelow. In particular, the network interface 1016 provides communicationbetween the computer system 1000 and any of a wide range of networks,such as an Ethernet (e.g., IEEE 802.3) network, a backplane, etc. Themass storage 1018 provides permanent storage for the data andprogramming instructions to perform the above-described processes andfeatures implemented by the respective computing systems identifiedabove, whereas the system memory 1014 (e.g., DRAM) provides temporarystorage for the data and programming instructions when executed by theprocessor 1002. The I/O ports 1020 may be one or more serial and/orparallel communication ports that provide communication betweenadditional peripheral devices, which may be coupled to the computersystem 1000.

The computer system 1000 may include a variety of system architectures,and various components of the computer system 1000 may be rearranged.For example, the cache 1004 may be on-chip with processor 1002.Alternatively, the cache 1004 and the processor 1002 may be packedtogether as a “processor module”, with processor 1002 being referred toas the “processor core”. Furthermore, certain embodiments of theinvention may neither require nor include all of the above components.For example, peripheral devices coupled to the standard I/O bus 1008 maycouple to the high performance I/O bus 1006. In addition, in someembodiments, only a single bus may exist, with the components of thecomputer system 1000 being coupled to the single bus. Moreover, thecomputer system 1000 may include additional components, such asadditional processors, storage devices, or memories.

In general, the processes and features described herein may beimplemented as part of an operating system or a specific application,component, program, object, module, or series of instructions referredto as “programs”. For example, one or more programs may be used toexecute specific processes described herein. The programs typicallycomprise one or more instructions in various memory and storage devicesin the computer system 1000 that, when read and executed by one or moreprocessors, cause the computer system 1000 to perform operations toexecute the processes and features described herein. The processes andfeatures described herein may be implemented in software, firmware,hardware (e.g., an application specific integrated circuit), or anycombination thereof.

In one implementation, the processes and features described herein areimplemented as a series of executable modules run by the computer system1000, individually or collectively in a distributed computingenvironment. The foregoing modules may be realized by hardware,executable modules stored on a computer-readable medium (ormachine-readable medium), or a combination of both. For example, themodules may comprise a plurality or series of instructions to beexecuted by a processor in a hardware system, such as the processor1002. Initially, the series of instructions may be stored on a storagedevice, such as the mass storage 1018. However, the series ofinstructions can be stored on any suitable computer readable storagemedium. Furthermore, the series of instructions need not be storedlocally, and could be received from a remote storage device, such as aserver on a network, via the network interface 1016. The instructionsare copied from the storage device, such as the mass storage 1018, intothe system memory 1014 and then accessed and executed by the processor1002. In various implementations, a module or modules can be executed bya processor or multiple processors in one or multiple locations, such asmultiple servers in a parallel processing environment.

Examples of computer-readable media include, but are not limited to,recordable type media such as volatile and non-volatile memory devices;solid state memories; floppy and other removable disks; hard diskdrives; magnetic media; optical disks (e.g., Compact Disk Read-OnlyMemory (CD ROMS), Digital Versatile Disks (DVDs)); other similarnon-transitory (or transitory), tangible (or non-tangible) storagemedium; or any type of medium suitable for storing, encoding, orcarrying a series of instructions for execution by the computer system1000 to perform any one or more of the processes and features describedherein.

For purposes of explanation, numerous specific details are set forth inorder to provide a thorough understanding of the description. It will beapparent, however, to one skilled in the art that embodiments of thedisclosure can be practiced without these specific details. In someinstances, modules, structures, processes, features, and devices areshown in block diagram form in order to avoid obscuring the description.In other instances, functional block diagrams and flow diagrams areshown to represent data and logic flows. The components of blockdiagrams and flow diagrams (e.g., modules, blocks, structures, devices,features, etc.) may be variously combined, separated, removed,reordered, and replaced in a manner other than as expressly describedand depicted herein.

Reference in this specification to “one embodiment”, “an embodiment”,“other embodiments”, “one series of embodiments”, “some embodiments”,“various embodiments”, or the like means that a particular feature,design, structure, or characteristic described in connection with theembodiment is included in at least one embodiment of the disclosure. Theappearances of, for example, the phrase “in one embodiment” or “in anembodiment” in various places in the specification are not necessarilyall referring to the same embodiment, nor are separate or alternativeembodiments mutually exclusive of other embodiments. Moreover, whetheror not there is express reference to an “embodiment” or the like,various features are described, which may be variously combined andincluded in some embodiments, but also variously omitted in otherembodiments. Similarly, various features are described that may bepreferences or requirements for some embodiments, but not otherembodiments.

The language used herein has been principally selected for readabilityand instructional purposes, and it may not have been selected todelineate or circumscribe the inventive subject matter. It is thereforeintended that the scope of the invention be limited not by this detaileddescription, but rather by any claims that issue on an application basedhereon. Accordingly, the disclosure of the embodiments of the inventionis intended to be illustrative, but not limiting, of the scope of theinvention, which is set forth in the following claims.

What is claimed is:
 1. A computer-implemented method comprising:detecting, by a computing system, a first orientation in which thecomputing system is positioned using one or more orientation sensors;providing, by the computing system, a first functionality when thecomputing system is positioned in the first orientation; detecting, bythe computing system, that the computing system becomes positioned in asecond orientation using the one or more orientation sensors; selecting,by the computing system, a second functionality, out of a set offunctionalities, based on a current state associated with the computingsystem, wherein the first functionality and the second functionality areassociated with content production of a content item, wherein the firstfunctionality is associated with an input element for creating thecontent item and the second functionality is associated with capturing amedia content item to be included in the content item; and providing, bythe computing system, the second functionality when the computing systembecomes positioned in the second orientation.
 2. Thecomputer-implemented method of claim 1, wherein the first orientationcorresponds to a portrait orientation and wherein the second orientationcorresponds to a landscape orientation.
 3. The computer-implementedmethod of claim 1, wherein the current state associated with thecomputing system includes at least one of a current context associatedwith an application running on the computing system or a current contextassociated with an operating system running on the computing system. 4.The computer-implemented method of claim 1, wherein at least a firstsubset out of the set of functionalities is associated with contentproduction, and wherein at least a second subset out of the set offunctionalities is associated with content consumption.
 5. Thecomputer-implemented method of claim 1, wherein the content item is apost on a social networking system, and wherein the second functionalityis associated with a camera mode for producing an image to be includedin the post.
 6. The computer-implemented method of claim 1, furthercomprising: determining that the computing system becomes positioned inthe first orientation subsequent to the providing of the secondfunctionality; selecting a third functionality based on the secondfunctionality; and providing the third functionality when the computingsystem becomes positioned in the first orientation subsequent to theproviding of the second functionality.
 7. The computer-implementedmethod of claim 6, wherein the third functionality is associated withinitiating a loading of an image, produced in a camera mode associatedwith the second functionality, to be included in a post to a socialnetworking system, and wherein a creation of the post was initiatedbased on the first functionality, wherein the media content item is theimage and the content item is the post.
 8. The computer-implementedmethod of claim 6, wherein the third functionality is associated with atleast one of a back instruction, a cancel instruction, an ignoreinstruction, a quit instruction, an escape instruction, or an exitinstruction.
 9. The computer-implemented method of claim 1, furthercomprising: determining a direction associated with a change inorientation experienced by the computing system when the computingsystem becomes positioned in the second orientation subsequent to beingpositioned in the first orientation, and wherein the selecting of thesecond functionality is based on the direction.
 10. Thecomputer-implemented method of claim 1, wherein the one or moreorientation sensors include at least one of an accelerometer, agyroscope, a compass, a barometer, a magnetometer, or a motionprocessor.
 11. The computer-implemented method of claim 1, furthercomprising: providing a third functionality when the computing system ispositioned in the first orientation; and providing a fourthfunctionality when the computing system becomes positioned in the secondorientation.
 12. The computer-implemented method of claim 11, whereinthe third functionality is associated with an input element for creatinga post on a social networking system, and wherein the fourthfunctionality is associated with at least one of adding a location tagto the post, adding a user tag to the post, applying facial recognitionto the post, or utilizing rich-text editing for the post.
 13. Thecomputer-implemented method of claim 11, wherein the third functionalityis associated with accessing a content item in a first view, wherein thefourth functionality is associated with accessing the content item in asecond view, and wherein the second view provides more informationassociated with the content item than the first view.
 14. Thecomputer-implemented method of claim 11, wherein the third functionalityis associated with a financial transaction, and wherein the fourthfunctionality is associated with providing at least one of a receipt, abusiness card, or a communication expressing gratitude.
 15. Thecomputer-implemented method of claim 11, wherein the third functionalityis associated with accessing a message in an inbox, and wherein thefourth functionality is associated with providing at least one of themessage, the inbox, or a message thread of which the message is a part.16. The computer-implemented method of claim 11, wherein the thirdfunctionality is associated with providing a link to a web resource, andwherein the fourth functionality is associated with initiating a loadingof the web resource via the link.
 17. The computer-implemented method ofclaim 11, wherein the third functionality is associated with accessing afirst content item in a first view, and wherein the fourth functionalityis associated with providing the first content item and at least one tabfor switching to a second view to access a second content item.
 18. Thecomputer-implemented method of claim 11, wherein the third functionalityis associated with a search, wherein the fourth functionality isassociated with providing a set of results based on the search, andwherein the providing of the set of results includes providing at leasta first subset of results associated with a first search result type anda second subset of results associated with a second search result type.19. A system comprising: at least one processor; and a memory storinginstructions that, when executed by the at least one processor, causethe system to perform: detecting a first orientation in which the systemis positioned using one or more orientation sensors; providing a firstfunctionality when the system is positioned in the first orientation;detecting that the system becomes positioned in a second orientationusing the one or more orientation sensors; selecting a secondfunctionality, out of a set of functionalities, based on a current stateassociated with the system, wherein the first functionality and thesecond functionality are associated with content production of a contentitem, wherein the first functionality is associated with an inputelement for creating the content item and the second functionality isassociated with capturing a media content item to be included in thecontent item; and providing the second functionality when the systembecomes positioned in the second orientation.
 20. A non-transitorycomputer-readable storage medium including instructions that, whenexecuted by at least one processor of a computing system, cause thecomputing system to perform: detecting a first orientation in which thecomputing system is positioned using one or more orientation sensors;providing a first functionality when the computing system is positionedin the first orientation; detecting that the computing system becomespositioned in a second orientation using the one or more orientationsensors; selecting a second functionality, out of a set offunctionalities, based on a current state associated with the computingsystem, wherein the first functionality and the second functionality areassociated with content production of a content item, wherein the firstfunctionality is associated with an input element for creating thecontent item and the second functionality is associated with capturing amedia content item to be included in the content item; and providing thesecond functionality when the computing system becomes positioned in thesecond orientation.